/**
* \brief 
* \author pengcheng (pengcheng@yslrpch@126.com)
* \date 2020-05-30
* \attention CopyrightÃ‚Â©ADC Technology(tianjin)Co.Ltd
* \attention Refer to COPYRIGHT.txt for complete terms of copyright notice
*/

#ifndef BBOZ2D_H__
#define BBOZ2D_H__
namespace detection
{
    

template<typename T>
class Box2d
{
public:
    T x1, y1, x2, y2, height, width, rotation;
    Box2d():
    x1(0),
    y1(0),
    x2(0),
    y2(0),
    height(0),
    width(0),
    rotation(0)
    {}

    Box2d(T _x1, T _y1, T _x2, T _y2, T _height, T _width, T _ratation):
    x1(_x1),
    y1(_y1),
    x2(_x2),
    y2(_y2),
    height(_height),
    width(_width),
    rotation(_ratation)
    {}

    ~Box2d(){}

};

template<typename T>
class LandMarks
{
public:
    T x, y;
    LandMarks():
    x(0),
    y(0)
    {}
    LandMarks(T _x, T _y):
    x(_x),
    y(_y)
    {}
};
template<typename T>
class Vector3T
{
public:
    T x1, x2, x3;
    Vector3T():
    x1(0),
    x2(0),
    x3(0)
    {}

    Vector3T(T _x1, T _x2, T _x3):
    x1(_x1),
    x2(_x2),
    x3(_x3)
    {}


};


template<typename T>
class ImageBBox2D
{
public:
    typedef Box2d<T> Box2DType;
    typedef LandMarks<T> LandMarksType;
    typedef Vector3T<T> Vector3;

    ImageBBox2D():
    box2d(Box2DType()),
    id(0),
    class_id(0),
    position(Vector3()),
    velocity(Vector3()),
    dimension(Vector3())
    {}


    T confidence_;
    Box2DType box2d;
    unsigned int id;
    unsigned int class_id;
    Vector3 position;
    Vector3 velocity;
    Vector3 dimension; //length, width, height
    LandMarksType marks[5];

};
}

#endif // !BBOZ2D_H__
